﻿#region 文件信息
/*----------------------------------------------------------------
// 
// 文件名称：	
// 文件功能描述：	
// 设计要求：	
//
// 文 件 名：    ITreeBuilder
// 创建者：      杨程
// 创建日期：	    2022/11/23 14:32:12

//----------------------------------------------------------------*/
#endregion


namespace Vampirewal.Core.Models.TreeModel;

/// <summary>
/// 
/// </summary>
public interface ITreeBuilder
{
    /// <summary>
    /// 是否选中全部节点
    /// </summary>
    bool? CheckedAllNodes { get; }


    /// <summary>
    /// 是否为单步加载模式
    /// </summary>
    bool IsSingleLoadMode { get; }

    /// <summary>
    /// 选中并更新节点选择状态
    /// </summary>
    /// <param name="curNode"></param>
    /// <param name="isChecked"></param>
    void CheckAndUpdateStateNode(object curNode, bool isChecked);

    /// <summary>
    /// 设置全局选择状态
    /// </summary>
    /// <param name="isChecked"></param>
    void SetCheckStatusOfAllNodes(bool isChecked);


    /// <summary>
    /// 选中复制项（Ctrl）
    /// </summary>
    /// <param name="selectedItem">当前选中项</param>
    void SelectedCopyItemByCtrl(object selectedItem);


    /// <summary>
    /// 选中复制项（Shift）
    /// </summary>
    /// <param name="selectedItem">当前选中项</param>
    void SelectedCopyItemByShift(object selectedItem);


    /// <summary>
    /// 清除所有已选择的待复制项，并选中指定的项
    /// </summary>
    /// <param name="selectedItem">当前选中项</param>
    void ClearSelectedCopyItems(object selectedItem);


    /// <summary>
    /// 搜索并定位到节点
    /// </summary>
    /// <param name="searchStr">搜索的字符串</param>
    /// <param name="searchOfDown">是否向下搜索</param>
    void SearchAndLocationNode(string searchStr, bool searchOfDown = true);


    /// <summary>
    /// 开始加载子项
    /// </summary>
    /// <param name="parentNode">父节点信息</param>
    void BeginLoadSubItems(object parentNode);
}
